function score = HC(Population,optimum)
% <max> <multi/many> <real/integer/label/binary/permutation> <large/none> <constrained/none> <expensive/none> <multimodal/none> <sparse/none> <dynamic/none> <robust/none>
% Hypervolume
    N=length(Population);
    M=length(Population(1,1).obj);
    PopObj=zeros(N,M);
    for i = 1 : N
        PopObj(i,:)= Population(1,i).obj;
    end
    score  = zeros(1,N);
    fmin   = min(min(PopObj,[],1),zeros(1,M));
    fmax   = max(optimum,[],1);
    PopObj = (PopObj-repmat(fmin,N,1))./repmat((fmax-fmin)*1.1,N,1);
    RefPoint = ones(1,M);
    for i=1:N
        score(1,i)=prod(abs(RefPoint-PopObj(i,:)));
    end
end
